package com.controller.admin;

import com.service.admin.AdminReportService;
import com.service.user.OrderService;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
import java.util.Map;

/**
 * 举报处理的控制器
 *
 * 
 */
@RestController
@CrossOrigin
public class ReportDealController {

  @Autowired AdminReportService adminReportService;

  @Autowired OrderService orderService;

  @PostMapping("test")
  public String test(@RequestParam("test") String test) {
    return String.valueOf(orderService.getWaitPayMaxPastMinutes(new String[] {"1"}));
  }

  /**
   * 获取所有商品举报的数目
   *
   * @return 所有商品举报的数目、未处理的数目
   */
  @PostMapping("admin/getAllGoodReportCount")
  public Map<String, Integer> getAllGoodReportCount() {
    return adminReportService.getAllGoodReportCount();
  }
  /**
   * 获取所有商品举报信息
   *
   * @param pageSize 页大小
   * @param pageIndex 页索引
   */
  @PostMapping("admin/getAllGoodReport")
  public List<Map<String, Object>> getAllGoodReport(
      @RequestParam("pageSize") int pageSize, @RequestParam("pageIndex") int pageIndex) {
    return adminReportService.getAllGoodReport(pageSize, pageIndex);
  }

  /**
   * 获取所有评论举报的数目
   *
   * @return 所有商品举报的数目
   */
  @PostMapping("admin/getAllCommentReportCount")
  public Map<String, Integer> getAllCommentReportCount() {
    return adminReportService.getAllCommentReportCount();
  }

  /**
   * @param pageSize 页大小
   * @param pageIndex 页索引
   */
  @PostMapping("admin/getAllCommentReport")
  public List<Map<String, Object>> getAllCommentReport(
      @RequestParam("pageSize") int pageSize, @RequestParam("pageIndex") int pageIndex) {
    return adminReportService.getAllCommentReport(pageSize, pageIndex);
  }

  /**
   * 获取管理员下架商品记录的数量
   *
   * @return 管理员下架商品记录的数量
   */
  @PostMapping("admin/getManagerPutOffGoodCount")
  public String getManagerPutOffGoodCount() {
    int count = adminReportService.getManagerPutOffGoodCount();
    return String.valueOf(count);
  }

  /**
   * 获取管理员直接下架的商品
   *
   * @param pageSize 页大小
   * @param pageIndex 页索引
   * @return 管理员直接下架的商品列表
   */
  @PostMapping("admin/getManagerPutOffGood")
  public List<Map<String, Object>> getManagerPutOffGood(
      @RequestParam("pageSize") int pageSize, @RequestParam("pageIndex") int pageIndex) {
    return adminReportService.getManagerPutOffGood(pageSize, pageIndex);
  }

  /**
   * 获取管理员下架评论记录的数量
   *
   * @return 管理员下架评论记录的数量
   */
  @PostMapping("admin/getManagerPutOffCommentCount")
  public String getManagerPutOffCommentCount() {
    int count = adminReportService.getManagerPutOffCommentCount();
    return String.valueOf(count);
  }

  /**
   * 获取管理员直接下架的评论
   *
   * @param pageSize 页大小
   * @param pageIndex 页索引
   * @return 管理员直接下架的评论列表
   */
  @PostMapping("admin/getManagerPutOffComment")
  public List<Map<String, Object>> getManagerPutOffComment(
      @RequestParam("pageSize") int pageSize, @RequestParam("pageIndex") int pageIndex) {
    return adminReportService.getManagerPutOffComment(pageSize, pageIndex);
  }

  /**
   * 处理一条商品举报
   *
   * @param adminName 管理员姓名
   * @param reportId 举报编号
   * @param result 处理结果：1为提醒，2为警告，3为终止卖书
   * @param replyInformer 回复举报者的模板
   * @param noticeSeller 回复卖家模板
   * @return 处理成功返回1，失败返回0
   */
  @PostMapping("admin/dealGoodReport")
  public String dealGoodReport(
      @RequestParam("adminName") String adminName,
      @RequestParam("reportId") String reportId,
      @RequestParam("result") int result,
      @RequestParam("replyInformer") String replyInformer,
      @RequestParam("noticeSeller") String noticeSeller) {
    int ret =
        adminReportService.dealGoodReport(adminName, reportId, result, replyInformer, noticeSeller);
    return String.valueOf(ret);
  }

  /**
   * 处理一条评论举报
   *
   * @param adminName 管理员姓名
   * @param reportId 举报编号
   * @param result 处理结果：1为提醒，2为警告，3为禁止永久评论
   * @param banDays 禁言天数
   * @param replyInformer 回复举报者的模板
   * @param noticeCommentUser 通知评论者的模板
   * @return 处理成功返回1，失败返回0
   */
  @PostMapping("admin/dealCommentReport")
  public String dealCommentReport(
      @RequestParam("adminName") String adminName,
      @RequestParam("reportId") String reportId,
      @RequestParam("result") int result,
      @RequestParam("banDays") int banDays,
      @RequestParam("replyInformer") String replyInformer,
      @RequestParam("noticeCommentUser") String noticeCommentUser) {
    int ret =
        adminReportService.dealCommentReport(
            adminName, reportId, result, banDays, replyInformer, noticeCommentUser);
    return String.valueOf(ret);
  }
}
